var editorOpts; // use a global for the submit and return data rendering in the
// examples
var jsondata;
var table;
$(document)
		.ready(
				function() {
					table = $('#example')
							.DataTable(
									{
										"aLengthMenu" : [ 5, 10, 20, 40, 60 ],
										 dom : "rtlip",
										//"dom" : '<l<\'#topPlugin\'>f>rt<ip><"clear">',
										"searching" : false,// 禁用搜索 
										"lengthChange" : true,
										"paging" : true,// 开启表格分页
										"bProcessing" : true,
										"bServerSide" : true,
										"bAutoWidth" : false,
										"sort" : "position",
										"deferRender" : true,// 延迟渲染
										"bStateSave" : false, // 在第三页刷新页面，会自动到第一页
										"iDisplayLength" : 10,
										"iDisplayStart" : 0,
										"ordering" : false,// 全局禁用排序
										"oLanguage" : {// 国际化配置
											"sProcessing" : "正在获取数据，请稍后...",
											"sLengthMenu" : "每页显示 _MENU_ 条",
											"sZeroRecords" : "没有找到数据",
											"sInfo" : "从 _START_ 到  _END_ 条记录 总记录数为 _TOTAL_ 条",
											"sInfoEmpty" : "记录数为0",
											"sInfoFiltered" : "(本页记录数 _MAX_ 条)",
											"sInfoPostFix" : "",
											"sSearch" : "搜索",
											"sUrl" : "",
											"oPaginate" : {
												"sFirst" : "第一页",
												"sPrevious" : "上一页",
												"sNext" : "下一页",
												"sLast" : "最后一页"
											}
										},
										"initComplete" : initComplete,
										drawCallback : function(settings) {
											$('input[name=allChecked]')[0].checked = false;// 取消全选状态
										},
										bProcessing : true, // 开启读取服务器数据时显示正在加载中……特别是大数据量的时候，开启此功能比较好
										bServerSide : true, // 开启服务器模式，使用服务器端处理配置datatable。注意：sAjaxSource参数也必须被给予为了给datatable源代码来获取所需的数据对于每个画。
										// 开启此模式后，你对datatables的每个操作
										// 每页显示多少条记录、下一页、上一页、排序（表头）、搜索，这些都会传给服务器相应的值。
										"sAjaxSource" : "getUserJson", //请求url  !!!!!
										"fnServerData" : function retrieveData(//重写从服务器获取数据的方法（$.getJSON）,从而使其更适合自己的应用
												sSource, aoData, fnCallback) {
													$.ajax({
														"type" : "get",
														"contentType" : "application/json",
														"url" : sSource,
														"dataType" : "json",
														"data" : aoData,
														"success" : function(
																resp) {
															// alert(resp.aaData);
															fnCallback(resp);//通过回调，在翻页，二次加载数据时，触发插件再次解析json数据，更新插件展示的数据
														}
													});
										},
										 "fnServerParams": function ( aoData ) { //向请求中 额外 追加几个参数 （自定义参数，组合查询参数）  
											 aoData.push( { "name": "userName", "value":$("#userNameS").val() } );  
								             aoData.push( { "name": "address", "value": $("#addressS").val() } );     
								         },
										// 给服务器发请求的url
										/*
										 * "ajax" : { "type" : "POST", "url" :
										 * "getUserJson", "data" : function(d) {
										 * 
										 * d.state=$("#state").val();
										 * d.deptname=$("#deptname").val().trim();
										 * d.startTime=$("#startTime").val();
										 * d.endTime=$("#endTime").val(); } },
										 */
										aoColumns : [ // 这个属性下的设置会应用到所有列，按顺序没有是空
												{
													"mData" : "userId",
													"orderable" : false, // 禁用排序
													"sDefaultContent" : "",
													"sWidth" : "5%"
												},
												{
													"mData" : 'userId',
													"orderable" : false, // 禁用排序
													"sDefaultContent" : "",
													"sWidth" : "10%"
												}, // mData
												// 表示发请求时候本列的列明，返回的数据中相同下标名字的数据会填充到这一列
												{
													"mData" : 'userName',
													"orderable" : false, // 禁用排序
													"sDefaultContent" : "",
													"sWidth" : "20%"
												},
												{
													"mData" : 'address',
													"orderable" : false, // 禁用排序
													"sDefaultContent" : "",
													"sWidth" : "20%"
												},
												{
													"mData" : 'age',
													"orderable" : false, // 禁用排序
													"sDefaultContent" : "",
													"sWidth" : "10%"
												},
												{
													"mData" : 'score',
													"orderable" : false, // 禁用排序
													"sDefaultContent" : "",
													"sWidth" : "10%"
												},
												{
													"mData" : "userId",
													"orderable" : false, // 禁用排序
													"sDefaultContent" : '',
													"sWidth" : "5%",
													"render" : function(data,
															type, full, meta) {
														return data = '<button   class="btn btn-primary btn-sm updateBtn" data-id='
																+ data
																+ '>编辑</button>  <button id="deleteOne" class="btn btn-danger btn-sm" data-id='
																+ data
																+ '>删 除</button>';

													}
												} ],
										   "columnDefs" : [ {
											"orderable" : false, // 禁用排序
											"targets" : [ 0 ], // 指定的列
											"data" : "id",
											"render" : function(data, type,
													full, meta) {
												return '<input type="checkbox" value="'
														+ data
														+ '" name="id"/>';
											}
										} ],

										select : false

									});
				});
function initComplete(data) {

	/**
	 * 多选选中和取消选中,同时选中第一个单元格单选框,并联动全选单选框
	 */
	$('#example tbody')
			.on(
					'click',
					'tr',
					function(event) {
						var allChecked = $('input[name=allChecked]')[0];// 关联全选单选框
						$($(this).children()[0])
								.children()
								.each(
										function() {
											if (this.type == "checkbox"
													&& (!$(event.target).is(
															":checkbox") && $(
															":checkbox", this)
															.trigger("click"))) {
												if (!this.checked) {
													this.checked = true;
													addValue(this);
													var selected = table.rows(
															'.selected').data().length;// 被选中的行数
													// 全选单选框的状态处理
													var recordsDisplay = table.page
															.info().recordsDisplay;// 搜索条件过滤后的总行数
													var iDisplayStart = table.page
															.info().start;// 起始行数
													if (selected === table.page
															.len()
															|| selected === recordsDisplay
															|| selected === (recordsDisplay - iDisplayStart)) {
														allChecked.checked = true;
													}
												} else {
													this.checked = false;
													cancelValue(this);
													allChecked.checked = false;
												}
											}
										});
						$(this).toggleClass('selected');// 放在最后处理，以便给checkbox做检测
					});

	/**
	 * 全选按钮被点击事件
	 */
	$('input[name=allChecked]').click(function() {
		if (this.checked) {
			$('#example tbody tr').each(function() {
				if (!$(this).hasClass('selected')) {
					$(this).click();
				}
			});
		} else {
			$('#example tbody tr').click();
		}
	});

	/**
	 * 单选框被选中时将它的value放入隐藏域
	 */
	function addValue(para) {
		var userIds = $("input[name=userIds]");
		if (userIds.val() === "") {
			userIds.val($(para).val());
		} else {
			userIds.val(userIds.val() + "," + $(para).val());
		}
	}

	/**
	 * 单选框取消选中时将它的value移除隐藏域
	 */
	function cancelValue(para) {
		// 取消选中checkbox要做的操作
		var userIds = $("input[name=allChecked]");
		var array = userIds.val().split(",");
		userIds.val("");
		for ( var i = 0; i < array.length; i++) {
			if (array[i] === $(para).val()) {
				continue;
			}
			if (userIds.val() === "") {
				userIds.val(array[i]);
			} else {
				userIds.val(userIds.val() + "," + array[i]);
			}
		}
	}

	/**
	 * 单行删除按钮点击事件响应
	 */
	// $('#example tbody').on('click', '#deleteOne', function() {
	// $("input[name=id]").val(table.row($(this).closest('tr')).data().id);//将用户id赋给隐藏的文本框
	// setTimeout(function(){deleteBatch();},20);//调用批量删除的方法(延迟20毫秒是为了能够显示出现选中的操作)
	// });
	/**
	 * 点击单行删除按钮
	 */
	$(document).delegate('#deleteOne', 'click', function() {
		var id = $(this).data("id");
		// alert(id);
		$("#delSubmit").val(id);
		$("#deleteOneModal").modal('show');
		$("body").css("padding-right",0);
	});
	/**
	 * 点击确认删除按钮
	 */
	$(document).delegate('#delSubmit', 'click', function() {
		var id = $(this).val();
		$('#deleteOneModal').modal('hide');
		$.ajax({
			url : "deleteUser?id=" + id,
			async : true,
			type : "GET",
			dataType : "text",
			cache : false, // 不允许缓存
			success : function(data) {
				if (data=="success") {	 
					jBox.tip("删除成功!!","success");
					 table.ajax.reload();
					// window.location.reload();
				} else {
					 jBox.tip("删除失败!!","error");
				}

			},
			error : function(data) {
				 jBox.tip("请求异常","error");
				
			}
		});
	});
	
	var theArray=[];
	 $(document).delegate('#deleteAll','click',function() {
		   //alert(11);
		   $("input[name=id]:checked").each(function() { 
			      theArray.push($(this).val());
			    });
		   if(theArray.length<1){
			   jBox.tip("请至少选择一个","warning");
		   }else{
			   $("#deleteAllModal").modal('show');
			   $("body").css("padding-right",0);
			   //alert(theArray);
		   }
			 
		   });
	 /**
		 * 点击确认删除按钮
		 */
		$(document).delegate('#delAllSubmit', 'click', function() {
			$("body").css("padding-right",0);
			//var id = $(this).val();
			var params ="?";
			for(var i = 0; i<theArray.length;i++){
				params+="id="+theArray[i]+"&";
			}
			//alert(params);
			params= params.substring(0,params.length-1);
			//alert(params);
			$('#deleteAllModal').modal('hide');
			$.ajax({
				url : "deleteMutiUser" + params,
				async : true,
				type : "GET",
				dataType : "text",
				cache : false, // 不允许缓存
				success : function(data) {
					if (data=="success") {
						jBox.tip("批量删除成功!!","success");
						table.ajax.reload();
						// window.location.reload();
					} else {
						jBox.tip("批量删除失败!!","error");
					}

				},
				error : function(data) {
					jBox.tip("批量删除失败!!","error");
				}
			});
		});
	$(document).delegate('.addBtn', 'click', function() {

		$('#addUser').modal('show');
		$("body").css("padding-right",0);
	});
	$(document).delegate('.updateBtn', 'click', function() {
		$("#titleId").html($(this).data("id"));
		// alert(table.rows(this).data());
        //alert(table);
		var rowdata = table.row($(this).closest('tr')).data();//获取待编辑的当前行 的 json数据
		$("#userId").val(rowdata.userId);
		$("#userName").val(rowdata.userName);
		$("#address").val(rowdata.address);
		$("#age").val(rowdata.age);
		$("#score").val(rowdata.score);
		$('#editUser').modal("show");  
		$("body").css("padding-right",0);
	});
	/**
	 * 点击确认修改按钮
	 */
	$(document).delegate('#submitUpdate', 'click', function() {
		var id = $(this).val();
		$('#editUser').modal('hide');
		$.ajax({
			url : "updateUser?id=" + id,
			async : true,
			type : "GET",
			dataType : "text",
			data: $("#updateUserForm").serialize(),
			cache : false, // 不允许缓存
			success : function(data) {
				if (data == "success") {
					table.ajax.reload();
					 jBox.tip("修改成功!!","success");
				} else {
					jBox.tip("修改失败!!","error");
				}

			},
			error : function(data) {
				jBox.tip("修改失败!!","error");
			}
		});
	});
	 $('#addUserForm').bind("submit", function(){
         /*var key_word = jQuery("#keyword").val();
         if(key_word == ""){ return false; }*/

         var options = {
                url: 'addUser',
                type: 'post',
                dataType: 'text',
                data: $("#addUserForm").serialize(),
                success: function (data) {
                	$('#addUser').modal('hide');  
                    if (data.length > 0){
                    	 table.ajax.reload();
                    	 jBox.tip("添加成功！！","success");
                       
                     }else{
                    	 jBox.tip("添加失败！！","error");
                     }
                     $("#userName1").val("");
                     $("#address1").val("");
                     $("#age1").val("");
                     $("#score1").val("");
                    
                }
         };
         $.ajax(options);
         return false;
   });
	$('#btnAddsubmit').click(function(){
        $('#addUserForm').submit();
   });
	$(document).delegate('#searchSubmit1', 'click', function() {
		table.ajax.reload();
		//table.draw();
	});

	
}
